home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
NetNews Offline 2
/
NetNews Offline Volume 2.iso
/
news
/
comp
/
std
/
c
/
430
< prev
next >
Wrap
Text File
|
1996-08-06
|
3KB
|
62 lines
Path: newshost.lanl.gov!tanmoy
From: tanmoy@qcd.lanl.gov (Tanmoy Bhattacharya)
Newsgroups: comp.std.c
Subject: Re: fast block zeroing, how defined?
Date: 13 Feb 1996 19:43:02 GMT
Organization: Los Alamos National Laboratory
Message-ID: <TANMOY.96Feb13124302@qcd.lanl.gov>
References: <4fqaj4$2qu@fu-berlin.de>
NNTP-Posting-Host: qcd.lanl.gov
Mime-Version: 1.0
Content-Type: text
In-reply-to: axl@zedat.fu-berlin.de's message of Tue, 13 Feb 1996 15:29:21 GMT
In article <4fqaj4$2qu@fu-berlin.de> axl@zedat.fu-berlin.de (Axel
Thimm) writes:
<snip>
in <string.h> there is (at least in GNU C) a function
void bzero(void *pointer, int length);
which fills the memory from pointer to pointer+length-1 with zeros. This
can be used for fast array zeroing, but I do not know how well this is
defined in ANSI C.
[Q1] Is bzero part of ANSI?
No.
[Q2] Are the representation of zeros in intergral types defined
as multiple "char" zeros? (This is true in all the implementations
I know of, but it should be also defined in the standard that way)
All the significant bits of zero of an integral type, except for the
highest, must be zero. Unfortunately, it has been decided that not all
bits are significant. I conclude that some of them can be used for
parity checks, and I conclude the top bit being zero (with others
being zero) can result in an invalid value. I am not familiar enough
with the standard to guarantee my conclusions have any merit: but I
would like to know why they are wrong if they are.
Provisionally, I would not memset or calloc on non-character integral
types if absolute adherence to the standard were a criterion.
[Q3] What does the standard say about float representations of zero?
Nothing.
What should the casting to a char[sizeof(float)] and vice versa do?
You can't cast to an array type.
(In case that 0.0f casted to a char array (or the pointers thereof, to
be precise) returns {0, 0, 0, 0} (in a 4-byte float, i.e.
sizeof(float)==4) then bzero could be used to zero float arrays, too.)
Cheers
Tanmoy--
tanmoy@qcd.lanl.gov(128.165.23.46) DECNET: BETA::"tanmoy@lanl.gov"(1.218=1242)
Tanmoy Bhattacharya O:T-8(MS B285)LANL,NM87545 H:#9,3000,Trinity Drive,NM87544
Others see <gopher://yaleinfo.yale.edu:7700/00/Internet-People/internet-mail>,
<http://alpha.acast.nova.edu/cgi-bin/inmgq.pl>or<ftp://csd4.csd.uwm.edu/pub/
internetwork-mail-guide>. -- <http://nqcd.lanl.gov/people/tanmoy/tanmoy.html>
fax: 1 (505) 665 3003 voice: 1 (505) 665 4733 [ Home: 1 (505) 662 5596 ]